/*
 Tiene la función de mostrar un calendario similar al de aplicaciones como google calendar o outlook
 mostrando la información de lo que sucede en las respectivas fechas y en respectivos horarios
 */



//nombre del contenedor
var container;
//contiene el tag de calendar
var _calendar;
//contiene el encabezado con los dias de la semana
var weekdays;
//contienen el nombde de los Meses del año
var Monthyear;
//contiene el encabesado del calendario
var _headcalendar;
//contenedor del calendario
var _XCalendar;
//eventos del calendario
var _xCalendarEvents;
//indica la direccion donde se encuentra la pagina que obtiene los eventos
var _xgetEvents;
//direccion de la pagina a editar
var _xEditPage;
//funcion que se encarga de inicializar los eventos
function initcalendar(){
	_XCalendar = new Calendar();
	//crea la instancia para almacenar los eventos
	_xCalendarEvents= new CalendarEvents();
	_xCalendarEvents.Create();
	//muestra el calendario
	this.Show=function()
	{
		$.get(_xgetEvents, { Month: (new Date().getMonth()+1 ), Year: (new Date().getFullYear() ) },
 		 function(data){
  		  eval(data);
		  _XCalendar.ShowMonth((new Date().getMonth() ));
  		});


		//_XCalendar.ShowDay();
		
	}
	//agrega un nuevo evento para en el archivo xml que se mostra en el calendario	
	this.addEvent=function(xYear,xMonth,xDay,xHour,xName,xDescription,xEdit,xId)
	{
		_xCalendarEvents.addEvent(xYear,xMonth,xDay,xHour,xName,xDescription,xEdit,xId);
		
	}
	
}
//
function Calendar()
{//crea la variable que contiene el dia
	var date = new Date() ;
	//año actual	
	var Year;
		this.Year=date.getFullYear();
	//año que se muestra
	var xYear;
		this.xYear=date.getFullYear();
	//mes que muestra el calendario
	var xMonth;
		this.xMonth=date.getMonth();
	//mes actaul
	var Month;
		this.Month=date.getMonth();;
	//Contiene el dia que se muestra en el calendario
	var xDay;
		this.xDay=date.getUTCDate();
	//contiene el dia de hoy
	var Day=date.getUTCDate();;	
		this.Day=date.getUTCDate();
	//obtiene la feche actual
	
	//
	$("#"+container).html("<div id='xcalendar'><div id=\"headcalendar\"></div><div id=\"calendar\"></div></div>");
	//
	weekdays="<tr class=\"weekdays\">"+
	"<th>Domingo</th><th>Lunes</th><th>Martes</th><th>Miercoles</th><th>Jueves</th><th>Viernes</th><th>Sabado</th></tr>";
	//controla el calendario
	_calendar=$("#calendar");
	//controla el head
	_headcalendar=$("#headcalendar");
	//contienen el nombre de los dias de la semana
	var days=["Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"];
	//contiene la cantidad de dias del mes
	var monthdays=[31,28,31,30,31,30,31,31,30,31,30,31]; 
	//meses del año
	Monthyear=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"];
	//muestra la vista de Mes
	/*
 	* @month: numero del 1 al 12 que indica el mes que va a mostrar
 	*/
	this.ShowMonth=function(_month)
	{
		this.MonthDetails();
		//obtiene en que dia de la semana inicia el mes
		d=new Date();		
		d.setFullYear(this.xYear,(_month),1);
		_day=d.getDay();
		
		//colecta la información para crea la tabla
		xtable=$(document.createElement("table")) ;	
		
		//controla la cantidad de columnas por tupla
		c=0;
		//controla la cantidad de tuplas vacias que debe ingresar
		k=0;
		//imprime el mes indicado		
		n=this.daysInMonth(this.xYear,_month);
		//imprime el encabezado con los dias de la semana
		xtable.append(weekdays);
		for (i = 0; i < n; i++) 
		{
			
			
			//agrega una tupla
			if (c == 0) {
				tr=null;
				tr = $(document.createElement("tr"));
			}	
			//rellena el calendario para que inicie el el dia indicado
				if(k==0)
				{
					k=1;
					
					for (r = 0;r < _day ; r++) 
					{
						headday=$(document.createElement("div"));
						headday.attr("class","headday");
						headday.html("&nbsp;");
						//contenido
						content=$(document.createElement("div"));
						content.attr("class","contentday");
						//agrega los tags al td
						td=$(document.createElement("td"));
						td.append(headday);
						td.append(content);
						if(c==0)
							td.attr("class","sunday");				
						else
							td.attr("class","day");
							
						tr.append(td);	
						c++;
					}
				}
				
			_xdate= (i+1)+","+_month+","+this.xYear;

			//cabecera del dia
			headday=$(document.createElement("div"));
			headday.attr("class","headday");
			headday.html((i+1));
			//contenido
			content=$(document.createElement("div"));	
			content.attr("class","contentday");		
			content.attr("id","day"+(i+1));
			content.html("<ul/>");		
						//td
			td=$(document.createElement("td"));
			td.attr("onClick","DetailsDay("+_xdate+")");	
			td.append(headday);
			td.append(content);
			
			if (((i+1)==this.Day)&&((this.Month)==_month))
			{
				td.attr("class","today");
				
			}else
			{
				if(c==0)
					//agrega una columna con el dia
					td.attr("class","sunday");
					
				else
					//agrega una columna con el dia
					td.attr("class","day");
			}
			tr.append(td);
			//cierra la tupla
			c++;
			if (c == 7) {
				xtable.append(tr);
				c=0;
			}
		}
		if (c > 0 ) {
			for (r = c;r < 7 ; r++) 
					{
						headday=$(document.createElement("div"));
						headday.attr("class","headday");
						headday.html("&nbsp;");
						//contenido
						content=$(document.createElement("div"));
						content.attr("class","contentday");
						//agrega los tags al td
						td=$(document.createElement("td"));
						td.append(headday);
						td.append(content);
						if(c==0)
							td.attr("class","sunday");				
						else
							td.attr("class","day");
							
						tr.append(td);	
						c++;
					}
			xtable.append(tr);
		}
		
		_calendar.html(xtable);
		this.ShowEvents(this.xYear,(_month));
	}
	//muestra la vista de la semana
	/*
 	* @week: numero del 1 al 54 que indica de las semanas del año
 	*/
	this.ShowWeek=function(_week)
	{
		
	}
	//muestra la vista del dia
	/*
 	* @day: numero del 1 al 31 que indica el dia del mes que va a mostrar
 	*/
	this.ShowDay=function()
	{
		
		this.DayDetails();
		_calendar.html("<div id=\"showday\"> </div>");
		
		_showday=$("#showday");
		_showday.append("<table class='day'/>")
		_table=$("#showday table")
		
		//crea el formulario que muestra los eventos del dia
		for(i=1;i<24;i++)
		{
			n=i;
			k="am";
			if (i>12){
				n=i-12;
				k="pm";	
			}
			_table.append("<tr><td class='dhour' >"+n+":00 "+k+"</td><td class='ddesc' id='thour"+i+"'/></tr>")
		}
		document.getElementById('thour7').scrollIntoView(true);
		
		
		//obtiene los eventos ocurrids en el dia
		events=_xCalendarEvents.getDayEvents(this.xYear,(this.xMonth+1),this.xDay);	
		while (events != false && events!=null) {
			d=events._xHour.split(":");
			n=d[0];
			if(d[1]=="0")
				d[1]="00";
				
			if (d[0]>12)
				n=d[0]-12
			if(events.edit)		
				edit="<div id='eventedit'><a href=\""+_xEditPage+"?evento="+ events.id+"\">Editar</a></div>";
			else
				edit="";
			//agrega un nuevo item a la lista
			$("#thour"+d[0]).append("<div id='hourevent'>"+ n+":"+d[1]+"</div><div id='headevent'>"+ events._xName +
				"</div>"+edit+"<div id='eventdesc'>"+events._xDescription+"</div>");
			
			events = events.next;
		}	
	}
	//determina la cantidad de dias de un mes
	//year indica el año en 4 digitos, month el numero del mes  de 1 a 12
	this.daysInMonth =function(_year, _month)
	{
		if((_month==2)&&(_year%4==0))
		{
			return 29;
		}else
		{
			return monthdays[_month];
		}
	}
	//
	this.MonthDetails=function()
	{
		_headcalendar.html("<div id=\"month\"> <div id=\"backmonth\"/> <div id=\"nextmonth\" /><div id=\"monthmsg\">" +Monthyear[this.xMonth]+","+this.xYear+
		"</div></div>");
		//obtiene los botones y les agrega las opciones de desplazamiento	
		_backmonth=$("#backmonth");
		_backmonth.attr("onClick","_XCalendar.BackMonth()");
		_nextmonth=$("#nextmonth");
		_nextmonth.attr("onClick","_XCalendar.NextMonth()");
		this.MenuOptions();
	}
	//
	this.DayDetails=function()
	{
		_headcalendar.html("<div id=\"day\"> <div id=\"backday\"/> <div id=\"nextday\" /><div id=\"daymsg\">"+
		" <input type='button' value='Hoy' onClick=\"_XCalendar.Today()\">   " +this.xDay+" "+Monthyear[this.xMonth]+","+this.xYear+
		"</div></div>");
		//obtiene los botones y les agrega las opciones de desplazamiento	
		_backday=$("#backday");
		_backday.attr("onClick","_XCalendar.BackDay()");
		_nextday=$("#nextday");
		_nextday.attr("onClick","_XCalendar.NextDay()");
		this.MenuOptions();
	}
	//
	this.Today=function()
	{
		this.xDay=this.Day;
		if (this.xMonth != this.Month || this.xYear != this.Year) {
		
			$.get(_xgetEvents, {
				Month: (this.Month + 1),
				Year: this.Year
			}, function(data){
				//limpia la información anterior
				_xCalendarEvents = new CalendarEvents();
				_xCalendarEvents.Create();
				eval(data);
				_XCalendar.ShowDay();
			});
		}
		this.xMonth=this.Month;
		this.xYear=this.Year;
		this.ShowDay();
	}
	//
	this.MenuOptions=function(){
		_headcalendar.append("<div id=\"calendarmenu\"><ul/></div>");
		_ulcalendarmenu=$("#calendarmenu ul");		
		_ulcalendarmenu.append("<li><a  onclick=\"_XCalendar.ShowDay();\">Dia</a></li>");
		//_ulcalendarmenu.append("<li><a href=''>Semana</a></li>");
		_ulcalendarmenu.append("<li><a  onclick=\"_XCalendar.ShowMonth("+this.xMonth+");\">Mes</a></li>");
		
	}
	//retrocede un mes
	this.BackMonth = function()
	{
		if (this.xMonth == 0) 
		{
			this.xMonth = 11;
			this.xYear--;
		}else
		{
			this.xMonth--;
		}
		
		$.get(_xgetEvents, { Month: (this.xMonth+1), Year: this.xYear },
 		 function(data){
		 	//limpia la información anterior
		 	_xCalendarEvents= new CalendarEvents();
			_xCalendarEvents.Create();
  		  eval(data);
		  _XCalendar.ShowMonth( _XCalendar.xMonth);	
  		});
		
	}
	//adelanta un mes
	this.NextMonth=function()
	{
		if (this.xMonth == 11) 
		{
			this.xMonth = 0;
			this.xYear++;
		}else
		{
			this.xMonth++;
		}
		$.get(_xgetEvents, { Month: (this.xMonth+1), Year: this.xYear },
 		 function(data){
		 	//limpia la información anterior
		 	_xCalendarEvents= new CalendarEvents();
			_xCalendarEvents.Create();
  		  eval(data);
		  _XCalendar.ShowMonth( _XCalendar.xMonth);	
  		});
		//this.ShowMonth(this.xMonth);	
	}
	//retrocede un dia
	this.BackDay = function()
	{
		this.xDay--;
		if(this.xDay==0)
		{
			if (this.xMonth == 0) {
				this.xMonth = 11;
				this.xYear--;
				
			}
			else {
				this.xMonth--;				
			}
			this.xDay=this.daysInMonth(this.xYear,this.xMonth);
		$.get(_xgetEvents, { Month: (this.xMonth+1), Year: this.xYear },
 		  function(data){	
		 	//limpia la información anterior
		 	_xCalendarEvents= new CalendarEvents();
			_xCalendarEvents.Create();	 	
  		  	eval(data);
		  	_XCalendar.ShowDay();	
  		});
			
		}
		
		this.ShowDay();	
	}
	//adelanta un dia
	this.NextDay=function()
	{
		
		if (this.daysInMonth(this.xYear, this.xMonth) > this.xDay)
		{
			this.xDay++;
		}
		else{
			this.xDay = 1;
			this.xMonth++;
			if (this.xMonth == 12) {
				this.xMonth = 0;
				this.xYear++;
			}
			$.get(_xgetEvents, { Month: (this.xMonth+1), Year: this.xYear },
 				 function(data){
				 	//limpia la información anterior
		 			_xCalendarEvents= new CalendarEvents();
					_xCalendarEvents.Create();		 	
  		 			 eval(data);	
					 _XCalendar.ShowDay();		
  				});				
				
		}
		
		this.ShowDay();	
	}
	//imprime los eventos en pantalla
	this.ShowEvents=function(xYear,xMonth)
	{
		month=_xCalendarEvents.getMonthEvents(xYear,(xMonth+1));
		days=null;	
		if(month!=null)
			days = month.lDay;
			
			while (days != null) {
				//cambia el atributo class a contentday1 que in
			//	$("#day" + days._xDay).attr("class", "contentday1");
				ul = $("#day" + days._xDay + " ul");
				//obtiene el total de elementos de la lista
				
				events = days.lEvents;
				while (events != null) {
					li = $("#day" + days._xDay + " ul li");
					//permite un maximo de 5 elementos por lista
					if (li.length <= 4) {
						d=events._xHour.split(":");
						am="am";
						n=d[0];
						if(d[0]>12){
							am="pm"
							n=d[0]-12;
						}
						
						if(d[1]=="0")
							d[1]="00";
						//agrega un nuevo item a la lista
						ul.append("<li>" + n+":"+d[1] + am+" - " + events._xName + "</li>");
					}
					events = events.next;
				}
				///	
				days = days.next;
			}
	}
		

		
	
}

//estructura de datos que contiene la información de los eventos 
//se compone  de una lista simple,XListEvent
//se manejan tres niveles, años, meses y dias
function CalendarEvents()
{
	//puntero
	var lYear;	
	this.Create=function()
	{
		this.lYear=null;
	}
	this.CreateYear=function(xYear)
	{
		if(this.lYear==null)
		{
			this.lYear=new ListYear();
			this.lYear.Create(xYear);
		}
		else
		{
			//obtiene el valor de la lista par verificar si existe el eño
			year=this.lYear;
			exist=false;
			while(year!=null)
			{
				if(year._xYear==xYear)
				{
					exist=true;
					break;
				}
				year=year.next;
			}
			// si no existe el mes lo crea
			if (!exist) {
				year = new ListYear();
				year.Create(xYear);
				year.next = this.lYear;
				this.lYear = year;
			}
		}
	}
	//busca y retorna un año
	this.getYear=function(xYear)
	{
		year=this.lYear;		
		while (year != null)
		{
			if (year._xYear == xYear) 
			{
				return year;
			}
			year=year.next;
		}
	}
	//elimina un año
	this.removeYear=function(xYear)
	{
		if (this.lYear._xYear == xYear) {
			this.lYear = this.lYear.next;
		}
		else {
			year = this.lYear;
			list = null;
			while (year != null) {
				
				if (year._xYear != xYear) {
				
					if (list == null) {
						list = year;
						list.next = false;
					}
					else {
						list.next = year;
					}
				}
					year = year.next;
					
				
			}
				this.lYear = list;
		}
		
	}
	//alamcena un evento en el año requerido
	this.addEvent=function(xYear,xMonth,xDay,xHour,xName,xDescription,xEdit,xId)
	{
		
		this.CreateYear(xYear);
		xyear=this.getYear(xYear);
		xyear.addEvent(xMonth,xDay,xHour,xName,xDescription,xEdit,xId);
		this.removeYear(xYear);
		if (this.lYear != null) {
			xyear.next=this.lYear;
			this.lYear = xyear;
		}
		else 
			this.lYear = xyear;
		
		
	}
	//obtiene los eventos de un determinado mes en determinado año
	this.getMonthEvents=function(xYear,xMonth)
	{
		
		var xyear=null;
		xyear=this.getYear(xYear);
		if (xyear!=null)
			return xyear.getEvents(xMonth);
		else return false;	
		
	}
	//obtiene los eventos de un determinado dia
	this.getDayEvents=function(xYear,xMonth,xDay)
	{
		
		var xyear=null;
		xyear=this.getYear(xYear);
		if (xyear!=null)
			return xyear.getDayEvents(xMonth,xDay);
		else return false;	
		
	}
	
	
}
//crea una listapara almacenar los años
function ListYear()
{
	//año
	var _xYear;
	//puntero
	var next;
	//meses
	var lMonth;
	
	//crea un nuecvo año
	this.Create=function(xYear)
	{
		this.next=null;
		this._xYear=xYear;
	}
	//Crea un nuevo mes
	this.CreateMonth=function(xMonth)
	{
		if(this.lMonth==null)
		{
			this.lMonth=new ListMonth();
			this.lMonth.Create(xMonth);
		}
		else
		{
			//obtiene el valor de la lista par verificar si existe el mes
			lmonth=this.lMonth;
			exist=false;
			while(lmonth!=null)
			{
				if(lmonth._xMonth==xMonth)
				{
					exist=true;
					break;
				}
				lmonth=lmonth.next;
			}
			// si no existe el mes lo crea
			if (!exist) {
				month = new ListMonth();
				month.Create(xMonth);
				month.next = this.lMonth;
				this.lMonth = month;
			}
		}
	}
	//busca y retorna un mes
	this.getMonth=function(xMonth)
	{
		month=this.lMonth;		
		while (month != null)
		{
			if (month._xMonth == xMonth) 
			{
				
				return month;
			}
			month=month.next;
		}
	}
	//elima un mes
	this.removeMonth=function(xMonth)
	{
		if (this.lMonth._xMonth == xMonth) {
			this.lMonth = this.lMonth.next;
		}
		else {
			lmonth = this.lMonth;
			list = null;
			while (lmonth != null) {
				
				if (lmonth._xMonth != xMonth) {
				
					if (list == null) {
						list = lmonth;
						list.next = false;
					}
					else {
						list.next = lmonth;
					}
				}
					lmonth = lmonth.next;
					
				
			}
				this.lMonth = list;
		}
		
	}
	//alamcena un evento en el mes requerido
	this.addEvent=function(xMonth,xDay,xhour,xName,xDescription,xEdit,xId)
	{
		this.CreateMonth(xMonth);
		xmonth=this.getMonth(xMonth);
		xmonth.addEvent(xDay, xhour, xName, xDescription,xEdit,xId);
		this.removeMonth(xMonth);
		if (this.lMonth != null) {
			xmonth.next=this.lMonth;
			this.lMonth = xmonth;
		}
		else 
			this.lMonth = xmonth;
		
		
	}
	//obtiene todos los eventos de un determinado mes
	this.getDayEvents=function(xMonth,xDay)
	{
		xmonth=this.getMonth(xMonth);
        if (xmonth != null) {
			return xmonth.getEvents(xDay);
		}
		else 
			return null;
	}
	this.getEvents=function(xMonth)
	{
		xmonth=this.getMonth(xMonth);
        if (xmonth != null) {
			return xmonth;
		}
		else 
			return null;
	}
	
}
//crea una lista para almacenar los meses

function ListMonth()
{
	//año
	var _xMonth;
	//puntero
	var next;
	//meses
	var lDay;
	
	//crea un nuecvo mes
	this.Create=function(xMonth)
	{
		this.next=null;
		this._xMonth=xMonth;
	}
	//Crea un nuevo mes
	this.CreateDay=function(xDay)
	{
		if(this.lDay==null)
		{
			 this.lDay=new ListDay();
             this.lDay.Create(xDay);

		}
		else
		{
		
            //obtiene el valor de la lista para verificar si existe el dia
            days=this.lDay;
            exist=false;
            while(days!=null)
            {
                    if(days._xDay==xDay)
                    {
                            exist=true;
                            break;
                    }
                    days=days.next;
            }
            // si no existe el mes lo crea
            if (!exist) {
                    day = new ListDay();
                    day.Create(xDay);
                    day.next = this.lDay;
                    this.lDay = day;
            }

		}
	}
	//busca y retorna un mes
	this.getDay=function(xDay)
	{
		days=this.lDay;              
        while (days != null)
        {
                if (days._xDay == xDay) 
                {
                        
                        return days;
                }
                days=days.next;
        }

		
	}
	//elima un mes
	this.removeDay=function(xDay)
	{
		 if (this.lDay._xDay == xDay) {
                this.lDay = this.lDay.next;
        }
        else {
            lday = this.lDay;
            list = null;
            while (lday != null) {
                    if (lday._xDay != xDay)
					{
	                    if (list == null) {
	                            list = lday;
	                            list.next = false;
	                    }
	                    else {
	                            list.next = lday;
								//lday=list;
	                    }
                    }
                            lday = lday.next;
            }
            this.lDay = list;
        }
		
	}
	//alamcena un evento en el mes requerido
	this.addEvent=function(xDay,xHour,xName,xDescription,xEdit,xId)
	{
		this.CreateDay(xDay);
        xday=this.getDay(xDay);
        xday.addEvent(xHour, xName, xDescription,xEdit,xId);
        this.removeDay(xDay);
        if (this.lDay != null) {
			xday.next = this.lDay;
			this.lDay = xday;
		}
		else {
			this.lDay = xday;
		}
		
	}
	//obtiene todos los eventos de un determinado mes
	this.getEvents=function(xDay)
	{
	 	xday=this.getDay(xDay);
        if (xday!=null)
                return xday.lEvents;
        else
       	 return null;
	}
	
}

//crea una lista para almacenar los dias y sus eventos
function ListDay(){
	//mes
	var _xDay;
	//puntero
	var next;
	//eventos
	var lEvents;
	//crea un nuevo mes
	this.Create = function(xDay){
		this.next = null;
		this._xDay = xDay;	
		//this.lEvents=null;
	}
	
	//agrega un nuevo evento al mes
	this.addEvent=function(xHour,xName,xDescription,xEdit,xId)
	{
		if(this.lEvents==null)
		{
			this.lEvents= new Event();
			this.lEvents.Create(xHour,xName,xDescription,xEdit,xId);
		}
		else
		{
			var event= new Event();
			event.Create(xHour,xName,xDescription,xEdit,xId);
			event.next=this.lEvents;
			this.lEvents=event;
		}
	}

}//Eventos
function Event()
{
	//Nombre del evento
	var _xName;
	//dia del evento

	var _xhour;
	//descripcion del evento
	var _xDescription;
	//puntero
	var next;
	//indica si el usuario puede editar el evento
	var edit;
	//identificador del evento en la base de datos
	var id;
	//crea un nuevo evento
	this.Create= function(xHour,xName,xDescription,xEdit,xId)
	{
		this._xHour=xHour;	
		this._xName=xName;
		this._xDescription=xDescription;
		this.edit=xEdit;
		this.next=null;
		this.id=xId;
	}
}



//muestra una ventana con la información de los eventos del dia

function DetailsDay(_day,_month,_year)
{
	_XDay=_day;
	daydetails=$("#daydetails");
	daydetails.remove();
	$("#"+container).append("<div id=\"daydetails\"/>");
	var daydetails;
	var closedetails;
	var headdetails;
	var uldetails;
	daydetails=$("#daydetails");
	daydetails.append("<div id='headdetails'>"+_day+" "+Monthyear[_month]+" "+_year+"</div>");
	daydetails.append("<div id='closedetails' onclick='ClosedayDetails()'>X</div>");
	
	closedetails=$("#closedetails");
	//closedetails.attr("onclick","$(\"#daydetails\").remove()");
	headdetails=$("#headdetails");
	daydetails.append("<ul/>");
	uldetails=$("#daydetails ul");
	
	_XCalendar.xDay=_day;
//obtiene los eventos ocurrids en el dia
	var events;
	events=_xCalendarEvents.getDayEvents(_year,_month+1,_day);
	var n=0;	
	
	
	
		while (events!=null)
		{
			d=events._xHour.split(":");
			w=d[0];
			am="am";
			if(d[0]>12)
			{
				am="pm";
				w=d[0]-12;
			}
				
			if(d[1]=="0")
				d[1]="00";
			
		
			n++;
			if(n%2!=0)
				//agrega un nuevo item a la lista
				uldetails.append("<li class='oddevent'> <label>"+w+":"+d[1]+" "+am+"</label> - "+events._xName+"</li>");
			else	
				uldetails.append("<li class='evenevent'><label>"+w+":"+d[1]+" "+am+"</label> - "+events._xName+"</li>");
			events=events.next;		
		}
	//opciones uqe permiten crear una ventana desplegable
	headdetails.mousedown(function(e){
			daydetails.easydrag('enable' );
	});
	daydetails.mouseover(function(){
	
		daydetails.css("cursor","default");
	}); 	
	daydetails.append("<a onclick=\"(getDay())\">Ver detalles</a>")

	$(document).keypress(function (e) {
      	if(e.which==0||e.which==27)
		{
			daydetails.remove();	
		}
      });	
}
//
function getDay()
{
	var daydetails;
	daydetails=$("#daydetails");
	daydetails.remove();
	_XCalendar.ShowDay();
}

function ClosedayDetails()
{
	var daydetails;
	daydetails=$("#daydetails");
	daydetails.remove();
	
}